package ningbo.bigDecimal;

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * @Author 宁铂
 * @Date 2021/7/17 19:40
 * @Version 1.0
 */
public class TestBigDecimal {
    /** 本类用于测试浮点数运算不精确方案 */
    public static void main(String[] args) {
        //f1(); //普通浮点数四则运算
        f2(); //使用BigDecimal解决浮点数运算不精确问题
    }

    private static void f1() {

        System.out.println("请输入要计算的第一个小数:");
        double d1 = new Scanner(System.in).nextDouble();
        System.out.println("请输入要计算的第二个小数:");
        double d2 = new Scanner(System.in).nextDouble();

        System.out.println(d1+d2);
        System.out.println(d1-d2);
        System.out.println(d1*d2);
        System.out.println(d1/d2);

    }

    private static void f2() {

        System.out.println("请输入要计算的第一个小数:");
        double d3 = new Scanner(System.in).nextDouble();
        System.out.println("请输入要计算的第二个小数:");
        double d4 = new Scanner(System.in).nextDouble();

        /** 不要使用Double类型的数据作为BigDecimal的参数 ,这样会计算不准确
         *  一般使用String类型作为参数(double转String直接拼接空串即可)
         * */
        BigDecimal bigDecimal1 = new BigDecimal(d3+"");
        BigDecimal bigDecimal2 = new BigDecimal(d4+"");

        //定义变量保存结果
        BigDecimal bigDecimal3;

        bigDecimal3 = bigDecimal1.add(bigDecimal2);
        System.out.println(bigDecimal3);

        bigDecimal3 = bigDecimal1.subtract(bigDecimal2);
        System.out.println(bigDecimal3);

        bigDecimal3 = bigDecimal1.multiply(bigDecimal2);
        System.out.println(bigDecimal3);

        /** 除谁 保留位数 舍入方式(默认:四舍五入) */
        bigDecimal3 = bigDecimal1.divide(bigDecimal2,3,BigDecimal.ROUND_HALF_UP);
        System.out.println(bigDecimal3);
    }
}
